A directory is a set of objects organized in a logical and hierarchical manner. An example of a directory is a telephone directory, which consists of a series of names, e.g. of persons or organizations, organized alphabetically, with each name having an address and phone number attached. A directory can be regarded as a tree of entries also known as directory information tree, or simply directory tree, due to the fact that data is represented in a hierarchical tree-like structure. The data in a directory can be managed by directory services.
Modifications and queries in a directory can be made using application protocols e.g. the Lightweight Directory Access Protocol (LDAP). One or more servers may contain the data making up the directory. In case of a distributed directory, regardless of which server a client connects to, it has the same view of the directory; a name presented to a server refers to the same entry it would refer to on another server.
There is an increasing interest on applications, especially in telecommunications networks, which could benefit from the capabilities offered by a central database, hosted on a server. Towards this server more than one client may need to be connected over a communication network. In this case for each client-server pair a dedicated connection is established.
For capacity reasons as well as for geographical redundancy reasons, more than one connection may need to be established from one client towards a given server. The server can offer one or more access points in order to support multiple connections from one client. In this case there is a possibility that not all the access points offer the same capacity even though they belong to the same server. It may also happen that although the access points have equal capacity it may be desirable that a given client uses a specific access point.
If there is not a mechanism to control and handle the connections from a client to the access points, problems like inefficient usage of hardware resources or congestions may occur. For example, due to a temporary connectivity failure, clients may be directed to get connected to another access point which may be the same for all the clients. This access point may not have enough capacity to handle all connections and congestion may occur. Also if many clients try to reconnect to the same access point simultaneously it is probable that the communication network will get overloaded with protocol messages from the clients. It may also happen that, due to a big number of simultaneous connection attempts towards the same access point, all of them will fail if the access point becomes unavailable. On the other hand if the access point is available and all connections succeed, there may again be a message overload.
In the U.S. Pat. No. 6,484,206 B2 a solution is described where in case of failure of multiple connections, one of the failed connections is selected and for this connection repeated attempts are made so that the connection is re-established between the client and the server. After this connection is re-established, attempts for re-establishment of the rest of the failed connections are made. Each re-establishment attempt has to be successful before a further attempt is made. This solution does not allow an efficient usage of hardware and may lead to delays since the re-establishment of each failed connection depends on the success of the previous re-establishment attempt.